package main.java.sq;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class Hangar {
	
	public static final Integer CAPACIDAD_MAXIMA=10;
	/**
	 * @uml.property  name="minerales" multiplicity="(0 -1)" dimension="1"
	 */
	private List<Minerales> minerales=new ArrayList<Minerales>();

	/**
	 * Getter of the property <tt>minerales</tt>
	 * @return  Returns the minerales.
	 * @uml.property  name="minerales"
	 */
	public List<Minerales> getMinerales() {
		return minerales;
	}

	/**
	 * Setter of the property <tt>minerales</tt>
	 * @param minerales  The minerales to set.
	 * @uml.property  name="minerales"
	 */
	public void setMinerales(List<Minerales> minerales) {
		this.minerales = minerales;
	}

		
		/**
		 */
		public void addConjuntoMinerales(List<Minerales> mineral){
			minerales.addAll(mineral);
			
		}
		
		public void addMineral(Minerales m){
			minerales.add(m);
		}
		
		public List<Minerales> tiposDeMinerales(){
			List<Minerales> solucion=new ArrayList<Minerales>();
			Iterator<Minerales> itMin=getMinerales().iterator();
			while(itMin.hasNext()){
				Minerales m=itMin.next();
				if(solucion.indexOf(m)<0){
					solucion.add(m);
				}
			}
			
			
			return solucion;
		}
		
		public List<Minerales> mineralesRepetidos(int numMinRep){
			
			int numrep=0;
			List<Minerales> solucion=new ArrayList<Minerales>();
			List<Minerales> auxiliar=new ArrayList<Minerales>();
			for(int i=0;i<getMinerales().size();i++){
				numrep=0;
				for(int j=0;j<getMinerales().size();j++){
					if(getMinerales().get(i).equals(getMinerales().get(j)) && i!=j){
						numrep=numrep+1;
						if(numMinRep==numrep && auxiliar.indexOf(getMinerales().get(j))<0){
							auxiliar.add(getMinerales().get(j));
							solucion.add(getMinerales().get(j));
							break;
						}
					}
				}
			}
			
			return solucion;
		}

			
			/**
			 */
			public boolean unoDeCadaMineral(){
				boolean neutronio=false;
				boolean duranio=false;
				boolean molybdeno=false;
				boolean tritanio=false;
				boolean unodecada=false;
				
				for(int i=0; i<minerales.size() ; i++ ){
					if(minerales.get(i)==Minerales.Duranio){
						duranio=true;
					}
					if(minerales.get(i)==Minerales.Molybdeno){
						molybdeno=true;
						
					}
					if(minerales.get(i)==Minerales.Tritanio){
						tritanio=true;
					}
					if(minerales.get(i)==Minerales.Neutronio){
						neutronio=true;
					}
					if(neutronio && duranio && molybdeno && tritanio){
						unodecada=true;
						break;
					}
				}
				
				
				
				return unodecada;	
				
				
			}

				
				/**
				 */
				public void eliminarConjuntoMinerales(List<Minerales> m){
					
					getMinerales().removeAll(m);
				}
				public void eliminarMinerales(Minerales mineral){
					getMinerales().remove(mineral);
								
				}
				
		public boolean tieneMineral(Minerales mineral, int numveces){
			boolean solucion=false;
			int num=0;
			for(int i=0;i<getMinerales().size();i++){
				if(getMinerales().get(i)==mineral){
					num=num+1;
					if(num==numveces){
						solucion=true;
						break;
					}
				}
			}
			
			return solucion;
		}
				
		public String toString(){
			String cadena="Minerales de tu Hangar: ";
			for (Minerales e: minerales){
				cadena = cadena + "\n" + e.toString();
			}
			
			return cadena;
			
		}

}
